﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AjaxControlToolkit;
using System.Collections.ObjectModel;

namespace TES.WEB.EnteRegulador.Controles
{
    /// <summary>
    /// Control que muestra los detalles de una legalizacion 
    /// </summary>
    public partial class ControlDetallesLegalizacionEnlace : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        /// <summary>
        /// Id de la legalizacion a la que pertenecen los datos
        /// </summary>
        public string IdLegalizacion
        {
            get { return HiddenFieldIdLegalizacion.Value; }
            set { HiddenFieldIdLegalizacion.Value = value; }
        }


        /// <summary>
        /// Id del popup extender
        /// </summary>
        public string IdPopUp
        {
            get { return Session["IdPopUpAgregarEnlaces"].ToString(); }
            set { Session["IdPopUpAgregarEnlaces"] = value; }
        }
        /// <summary>
        /// Id del control que muestra los detalles del control
        /// </summary>
        public string IdControlDetalles
        {
            get { return Session["IdControlAgregarEnlaces"].ToString(); }
            set { Session["IdControlAgregarEnlaces"] = value; }
        }

        /// <summary>
        /// Data bind del control
        /// </summary>
        public override void DataBind()
        {

            GridViewControlDetallesLegalizacionesEnlace.DataBind();
            if (GridViewControlDetallesLegalizacionesEnlace.SelectedIndex == -1)
            {
                GridViewControlDetallesLegalizacionesEnlace.SelectedIndex = 0;
            }

            int i = GridViewControlDetallesLegalizacionesEnlace.PageIndex;
            int p = GridViewControlDetallesLegalizacionesEnlace.PageSize;

            int factor = i * p;


            FormViewDetallesLegalizacionesEnlace.PageIndex = GridViewControlDetallesLegalizacionesEnlace.SelectedIndex + factor;
            FormViewDetallesLegalizacionesEnlace.DataBind();
            PanelCompletio.Update();
        }

        protected void btnFiltrarLegalizacionesEnlace_Click(object sender, EventArgs e)
        {

        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void GridViewControlDetallesLegalizacionesEnlace_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.DataBind();
        }

        protected void GridViewControlDetallesLegalizacionesEnlace_PageIndexChanged(object sender, EventArgs e)
        {
            this.DataBind();
        }

        protected void GridViewControlDetallesLegalizacionesEnlace_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "AgregarEnlaces")
            {
                AjaxControlToolkit.ModalPopupExtender mpe = FindControlRecursive(this.Page, IdPopUp) as ModalPopupExtender;
                ControlMergeLegalizacion cde = FindControlRecursive(this.Page, IdControlDetalles) as ControlMergeLegalizacion;
                int index = 0;
                if (int.TryParse(e.CommandArgument.ToString(), out index) && cde != null)
                {
                    //Guid idLegalizacion = new Guid(((GridView)(sender)).DataKeys[index].Value.ToString());
                    //cde.IdLegalizacion = idLegalizacion.ToString();
                    //cde.DataBind();

                    cde.Seleccionable = true;
                    ReadOnlyCollection<TES.EnteRegulador.MergeEnlace> listadoEnlaces = TES.EnteRegulador.FotoDatosMinisterio.CrearListaMerges(100.0d);
                    cde.DataSource = listadoEnlaces;
                    cde.DataBind();
                    
                }

                //regActual.MergeRed.ListaMerges

                mpe.Show();
            }
        }

        /// <summary>
        /// Finds a control by recursively searching containing controls
        /// </summary>
        /// <param name="root">Top-level control that contains controls</param>
        /// <param name="id">ID of the control to find</param>
        /// <returns>Control matching the ID</returns>
        public static Control FindControlRecursive(Control root, string id)
        {
            if (root.ID == id)
            {
                return root;
            }

            foreach (Control c in root.Controls)
            {
                Control t = FindControlRecursive(c, id);
                if (t != null)
                {
                    return t;
                }
            }

            return null;
        }

      
    }
}